class Person:
    def __init__(self, name):
        self._name = name

    @property
    def name(self): return self._name

    @name.setter
    def name(self, value):
        if not isinstance(value, str):
            raise TypeError('Expected a string')
        self._name = value

    @name.deleter
    def name(self):
        raise AttributeError('Can\'t delete attribute')


if __name__ == '__main__':
    person = Person('vincent')
    del person.name
    person.name = {}
